/*************************************************************
   Copyright(C) 2017 by MartyrCompany
   All rights reserved.
   
   UIControlData.cs
   UnityFramework
   
   Created by WuIslet on 2020-11-03.
   
*************************************************************/
#define USE_EDITOR_UI_CONTROLDATA1

#if !USE_EDITOR_UI_CONTROLDATA
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 当前UI所有的绑定数据以及子UI指定
/// </summary>
[DisallowMultipleComponent]
public class UIControlData : MonoBehaviour
{
//    /// <summary>
//    /// 所有绑定的组件，不允许重名
//    /// </summary>
//    public List<CtrlItemData> ctrlItemDatas;

//    private Dictionary<string, CtrlItemData> mUIData;

//    private void InitUIData()
//    {
//        mUIData = new Dictionary<string, CtrlItemData>(ctrlItemDatas.Count);
//        foreach (var tmp in ctrlItemDatas)
//        {
//            if (mUIData.ContainsKey(tmp.name))
//            {
//                Debug.LogError("包含这个了" + tmp.name);
//                continue;
//            }
//            mUIData.Add(tmp.name, tmp);
//        }
//    }

    public UnityEngine.Object GotIt(string name, int index = 0, bool isSilent = false)
    {
//        if (mUIData == null)
//            InitUIData();

//        CtrlItemData info = null;
//        if (!mUIData.TryGetValue(name, out info))
//        { 
//            if (!isSilent)
//            {
//                Debug.LogError("找不到这个名字 ： " + name);
//            }
//            return null;
//        }

//        var obj = info.GetTargets(null);
//        if (!isSilent && obj == null)
//            Debug.LogError("找不到这个物体，  名字： " + name + " 索引： " + index);
//        return obj;
        return null;
    }

//    //public UnityEngine.Object[] GotIts(string name, bool isSilent = false) //todo control data list
//    //{
//    //    if (mUIData == null)
//    //        InitUIData();

//    //    CtrlItemData info = null;
//    //    if (!mUIData.TryGetValue(name, out info))
//    //    {
//    //        if(!isSilent)
//    //            Debug.LogError("找不到这个名字 ： " + name);
//    //        return null;
//    //    }
//    //    //var info = mUIData[name];
//    //    if (info == null)
//    //    {
//    //        if(!isSilent)
//    //            Debug.LogErrorFormat(" 名字： {0} 没东西", name);
//    //        return null;
//    //    }
//    //    return info.targets;
//    //}
    
//    public T GetIt<T>(string name, int index = 0, bool isSilent = false) where T : UnityEngine.Object
//    {
//        if (mUIData == null)
//            InitUIData();

//        CtrlItemData info = null;
//        if (!mUIData.TryGetValue(name, out info))
//        {
//            if (!isSilent)
//                Debug.LogError("找不到这个名字 ： " + name);
//            return null;
//        }

//        var obj = info.GetTargets(null);
//        if (!isSilent && obj == null)
//            Debug.LogError("找不到这个物体，  名字： " + name + " 索引： " + index);
//        return obj as T;
//    }

//    public GameObject GotGoByPath(string rawPath, bool isSilent = false)
//    {
//        var list = rawPath.Split(':');
//        if (list.Length < 2)
//            return null;

//        var path = list[0];
//        var index = 0;
//        if (!int.TryParse(list[1], out index))
//            return null;

//        if (mUIData == null)
//            InitUIData();

//        CtrlItemData info = null;
//        if (!mUIData.TryGetValue(path, out info))
//        {
//            if (!isSilent)
//            {
//                Debug.LogError("找不到这个名字 ： " + path);
//            }
//            return null;
//        }

//        var obj = info.GetTargets(null);
//        if (obj == null)
//        {
//            if (!isSilent)
//                Debug.LogError("找不到这个物体，  名字： " + path + " 索引： " + index);
//            return null;
//        }

//        var com = obj as Component;
//        if (com != null)
//        {
//            return com.gameObject;
//        }
//        var go = obj as GameObject;
//        if (go != null)
//        {
//            return go;
//        }
//        return null;
//    }

//    #region For Editor
//#if UNITY_EDITOR
//    /// <summary>
//    /// 自动化使用的临时参数，代码不要使用它
//    /// </summary>
//    public string ScriptSymbol = "";
//    public string ScriptFolder = "";

//    private bool IsInCurrentPrefab(Transform t)
//    {
//        do
//        {
//            if (t == transform)
//                return true;
//            t = t.parent;
//        }
//        while (t != null);
//        return false;
//    }
    
//    private bool IsNeedSave()
//    {
//        foreach (var ctrl in ctrlItemDatas)
//        {
//            if (string.IsNullOrEmpty(ctrl.type))
//                return true;
//        }
//        return false;
//    }
    
//    [ContextMenu("复制定义代码到剪贴板")]
//    public void CopyCodeToClipBoardPublic()
//    {
//        CtrlItemDataHelper.CopyCodeToClipBoardImpl("public", ctrlItemDatas, ScriptSymbol);
//    }

//    [ContextMenu("复制初始化代码到剪贴板")]
//    public void CopyInitCodeToClipBoard()
//    {
//        CtrlItemDataHelper.CopyInitCodeToClipBoardImpl(ctrlItemDatas, ScriptSymbol);
//    }

//    [ContextMenu("复制按钮注册到剪贴板")]
//    public void CopyViewModelChildToClipBoard()
//    {
//        CtrlItemDataHelper.CopyViewModelChildToClipBoardImpl(ctrlItemDatas, ScriptSymbol);
//    }
//#endif
//    #endregion For Editor
}
#endif